# -*- coding: utf-8 -*-

from vialink.django.gridcrud import *

from usuarios.models import Grupo
from usuarios.forms import GrupoForm

class GrupoGridCrud(GridCrud):
    nome = FieldFormatter()
    user_responsavel = FieldFormatter()

    class Meta:
        model = Grupo
        form = GrupoForm
        template = 'usuarios/partial/grupo_form.html'

    def save(self, request, form, editing, **kwargs):
        """ Redefinindo para que salve o usuario logado qdo cadastrar o objeto.
        """
        obj = form.save()
        #XXX o tokenInput.js está usando um form customizado
        # e por algum motivo, dar form.save(commit=False) não salva os 
        # dados desse form customizado :-(
        if not editing:
            obj.user_responsavel = request.user
            obj.save()
        
        return obj

    def check_deletable(self, request, obj, **kwargs):
        """Só permite excluir grupo se não existirem Usuarios associados.
        """ 
        from django.core.exceptions import ValidationError
        if obj.usuario_set.exists():
            raise ValidationError(u'NÃO é possível remover. Grupo já associado a usuários.')

